home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / util / TimeZoneNameUtility.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.8 KB  |  81 lines

  1. package sun.util;
  2.  
  3. import java.lang.ref.SoftReference;
  4. import java.util.Enumeration;
  5. import java.util.LinkedList;
  6. import java.util.Locale;
  7. import java.util.MissingResourceException;
  8. import java.util.concurrent.ConcurrentHashMap;
  9. import java.util.spi.TimeZoneNameProvider;
  10. import sun.util.resources.LocaleData;
  11. import sun.util.resources.OpenListResourceBundle;
  12.  
  13. public final class TimeZoneNameUtility {
  14.    private static ConcurrentHashMap<Locale, SoftReference<OpenListResourceBundle>> cachedBundles = new ConcurrentHashMap();
  15.    private static ConcurrentHashMap<Locale, SoftReference<String[][]>> cachedZoneData = new ConcurrentHashMap();
  16.  
  17.    public static final String[][] getZoneStrings(Locale var0) {
  18.       SoftReference var2 = (SoftReference)cachedZoneData.get(var0);
  19.       String[][] var1;
  20.       if (var2 == null || (var1 = (String[][])var2.get()) == null) {
  21.          var1 = loadZoneStrings(var0);
  22.          var2 = new SoftReference(var1);
  23.          cachedZoneData.put(var0, var2);
  24.       }
  25.  
  26.       return var1;
  27.    }
  28.  
  29.    private static final String[][] loadZoneStrings(Locale var0) {
  30.       LinkedList var1 = new LinkedList();
  31.       OpenListResourceBundle var2 = getBundle(var0);
  32.       Enumeration var3 = var2.getKeys();
  33.       Object var4 = null;
  34.  
  35.       while(var3.hasMoreElements()) {
  36.          String var5 = (String)var3.nextElement();
  37.          String[] var6 = retrieveDisplayNames(var2, var5, var0);
  38.          if (var6 != null) {
  39.             var1.add(var6);
  40.          }
  41.       }
  42.  
  43.       String[][] var7 = new String[var1.size()][];
  44.       return (String[][])var1.toArray(var7);
  45.    }
  46.  
  47.    public static final String[] retrieveDisplayNames(String var0, Locale var1) {
  48.       OpenListResourceBundle var2 = getBundle(var1);
  49.       return retrieveDisplayNames(var2, var0, var1);
  50.    }
  51.  
  52.    private static final String[] retrieveDisplayNames(OpenListResourceBundle var0, String var1, Locale var2) {
  53.       LocaleServiceProviderPool var3 = LocaleServiceProviderPool.getPool(TimeZoneNameProvider.class);
  54.       String[] var4 = null;
  55.       if (var3.hasProviders()) {
  56.          var4 = (String[])var3.getLocalizedObject(sun.util.TimeZoneNameUtility.TimeZoneNameGetter.access$000(), var2, var0, var1, new Object[0]);
  57.       }
  58.  
  59.       if (var4 == null) {
  60.          try {
  61.             var4 = var0.getStringArray(var1);
  62.          } catch (MissingResourceException var6) {
  63.          }
  64.       }
  65.  
  66.       return var4;
  67.    }
  68.  
  69.    private static final OpenListResourceBundle getBundle(Locale var0) {
  70.       SoftReference var2 = (SoftReference)cachedBundles.get(var0);
  71.       OpenListResourceBundle var1;
  72.       if (var2 == null || (var1 = (OpenListResourceBundle)var2.get()) == null) {
  73.          var1 = LocaleData.getTimeZoneNames(var0);
  74.          var2 = new SoftReference(var1);
  75.          cachedBundles.put(var0, var2);
  76.       }
  77.  
  78.       return var1;
  79.    }
  80. }
  81.